/***********************************************
 **** 版权声明处 **
 ****  为了方便阅读和维护，请严格遵守相关代码规范，谢谢   ****
 *******************************************/
package bpm.graphic
{
	import flash.display.DisplayObject;
	import flash.geom.Point;

	/*******************************************
	 **** huangjixin,2012-11-19,上午9:12:53 **
	 **** 请一句话表述该类主要作用  **
	 *******************************************/
	public class PortBase extends Object
	{
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// private 类私有静态变量和静态常量声明处。（全部大写，使用下划线进行分割）
		// 例如：private static const EXAMPLE:String = "example";
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// public 类公有静态变量和静态常量声明处。（全部大写，使用下划线进行分割）
		// 例如：public static const EXAMPLE:String = "example";
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// private 私有变量声明处，请以“_”开头定义变量
		// 例如：private var _example:String;
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		private var _capacity : int;
		private var _direction : String;
		private var _id : Object;
		
		private var _isDefaultPort : Boolean;
		private var _links : Vector.<Link>;
		private var _movable : Boolean;
		private var _owner : Node;
		private var _potentiallyAttachedIntergraphLinks : Vector.<Link>;
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// public 公有变量声明处
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// 构造函数，初始化相关工作可以放在里面
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		public function PortBase(id:Object = null, moveable:Boolean = true, direction:String = "any", capacity:int=100)
		{
		}//构造函数结束
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// getter和setter函数
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		/**
		 * 最大连接数 
		 */
		public function get capacity():int
		{
			return _capacity;
		}
		
		/**
		 * @private
		 */
		public function set capacity(value:int):void
		{
			_capacity = value;
		}
		
		/**
		 * 表明该端口可以出来，进去或者两边 
		 */
		public function get direction():String
		{
			return _direction;
		}
		
		/**
		 * @private
		 */
		public function set direction(value:String):void
		{
			_direction = value;
		}
		
		/**
		 * ID标识符
		 */
		public function get id():Object
		{
			return _id;
		}
		
		/**
		 * @private
		 */
		public function set id(value:Object):void
		{
			_id = value;
		}
		
		public function get isDefaultPort():Boolean
		{
			return _isDefaultPort;
		}
		
		/**
		 * 该端口引用的link连接。 
		 */
		public function get links():Vector.<Link>
		{
			return _links;
		}
		
		/**
		 * 是否允许改变端口位置。
		 * Indicates if graph layout and user interaction are allowed to change the position of the port. 
		 */
		public function get movable():Boolean
		{
			return _movable;
		}
		
		/**
		 * @private
		 */
		public function set movable(value:Boolean):void
		{
			_movable = value;
		}
		
		/**
		 * 该端口所在的节点。 
		 */
		public function get owner():Node
		{
			return _owner;
		}
		
		/**
		 * The intergraph links potentially attached to this port. 
		 */
		public function get potentiallyAttachedIntergraphLinks():Vector.<Link>
		{
			return _potentiallyAttachedIntergraphLinks;
		}
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// 相关事件响应函数和逻辑函数存放处
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		public function  allow(link:Link, origin:Boolean = true):Boolean{
			return true;
		}
		
		public function  getConnectionPoint(link:Link, referencePoint:Point, targetCoordinateSpace:DisplayObject, connectionPoint:Point, originPoint:Point, origin:Boolean = true):void{
		
		}
		
		public function  getLinksCount():int{
			return 0;
		}
		
		public function getPotentiallyAttachedIntergraphLinksCount():int{
			return 0;
		}
		
		public function move(point:Point):void{
		
		}
		
		public function supportsMove():Boolean{
			return true;
		}
		
		protected function portChanged():void
		{
			
		}//portChanged():void结束
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// override 覆盖函数
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
	}//类结束
}//包结束